home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / internet-drafts / draft-adie-shave-00.txt < prev    next >
Text File  |  1993-10-12  |  24KB  |  1,000 lines

  1. Internet Draft (SHAVE)                             C. Adie
  2. Expires April 1994                    Edinburgh University
  3. Filename draft-adie-shave-00.txt          12 October, 1993
  4.  
  5.  
  6.     SGML-based Hierarchical Attribute/Value Encoding (SHAVE)
  7.  
  8.  
  9.  
  10. STATUS OF THIS DOCUMENT
  11.  
  12. This document is an Internet Draft.  Internet Drafts are working
  13. documents of the Internet Engineering Task Force (IETF), its
  14. Areas and its Working Groups.  (Note that other groups may also
  15. distribute working documents as Internet Drafts.)
  16.  
  17. Internet Drafts are draft documents valid for a maximum of six
  18. months.  Internet Drafts may be updated, replaced, or obsoleted
  19. by other documents at any time.  It is not appropriate to use
  20. Internet Drafts as reference material or to cite them other than
  21. as a "working draft" or as "work in progress".  To learn the
  22. current status of any Internet Draft, please check the 1id-
  23. abstracts.txt listing contained in the Internet Drafts Shadow
  24. Directories on ds.internic.net, nic.nordu.net, ftp.nisc.sri.com,
  25. or munnari.oz.au.
  26.  
  27. SUMMARY
  28.  
  29. The usefulness of attribute/value pairs for conveying information
  30. is well established.  There is a need for a standard text-based
  31. method of representing attribute/value data, which is capable of
  32. being easily written and read by humans, and also easily
  33. processed by a computer program.  Often, such data is required to
  34. be transferred in electronic mail messages.  This document
  35. describes how SGML (Standard Generalized Markup Language) can be
  36. used as the basis for such a representation.
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45. C. Adie                                                    1
  46.  
  47.  
  48. Internet Draft         12 October, 1993 (Expires April 1994)
  49.  
  50.  
  51.  
  52.  
  53.  
  54. Table of Contents
  55.  
  56.  
  57. 1. Introduction..........................................3
  58.      1.1 Requirements....................................4
  59.      1.2 SGML............................................4
  60.      1.3 The SHAVE Approach..............................5
  61.  
  62. 2. General SGML Environment..............................7
  63.  
  64. 3. DTD Restrictions......................................8
  65.  
  66. 4. Document Instance Restrictions........................12
  67.  
  68. 5. Examples..............................................14
  69.  
  70. 6. References............................................18
  71.  
  72. 7. Security Considerations...............................18
  73.  
  74. 8. Acknowlegements.......................................19
  75.  
  76. 9. Contact...............................................19
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98. C.Adie             draft-adie-shave-00.txt                 2
  99.  
  100.  
  101. Internet Draft         12 October, 1993 (Expires April 1994)
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108. 1. Introduction
  109.  
  110. The use of attribute/value pairs for conveying information is
  111. well established.  Although ASN.1 is often used to transmit
  112. attribute/value information (eg in X.500), it is not a human
  113. readable representation.
  114.  
  115. There is a need for a standard text-based method of representing
  116. attribute/value data, which is capable of being easily written
  117. and read by humans, and also easily processed by a computer
  118. program.  Often, such data is required to be transfered in
  119. electronic mail messages.
  120.  
  121. Typical applications for such a representation are:
  122.  
  123. .  Exchange of personal contact information (such as might be
  124.    shown on a business card).  A recipient might process this
  125.    information using a database program.
  126.  
  127. .  Exchange of meta-information concerning a resource (eg a file
  128.    or a service) on the Internet.
  129.  
  130. .  Dissemination of information regarding an event (a meeting,
  131.    lecture, conference etc.).  A recipient might process this
  132.    information using a personal time manager or simple diary
  133.    program.
  134.  
  135. .  As a format for an electronic mail "form", for form-filling
  136.    applications.
  137.  
  138. This document describes how SGML (Standard Generalized Markup
  139. Language) can be used as the basis for such a representation.
  140. This document draws heavily on the work done by Dave Crocker on
  141. STIF [Crocker 93a] and PCI [Crocker 93b].
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151. C.Adie             draft-adie-shave-00.txt                 3
  152.  
  153.  
  154. Internet Draft         12 October, 1993 (Expires April 1994)
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161. 1.1 Requirements
  162.  
  163. The requirements for an attribute/value text format are as
  164. follows, roughly in order of importance.
  165.  
  166. 1. Must be easy to read by people who are not computer experts.
  167.  
  168. 2. Must be easy to write by non-experts, using very simple
  169.    written instructions.
  170.  
  171. 3. Must be easy to write a parser for.
  172.  
  173. 4. Must be capable of handling multi-valued attributes, where
  174.    there may be significance in the ordering of values.
  175.  
  176. 5. Must be capable of handling nested attribute/value pairs - ie
  177.    attributes whose values are attribute/value pairs.
  178.  
  179. 6. Must be capable of handling non-text attribute values by
  180.    reference.
  181.  
  182. 7. Must be able to handle attribute values which are not in US
  183.    ASCII.
  184.  
  185. 8. It must be easy for a computer program to identify that part
  186.    of a text file which contains attribute/value information
  187.    relevant to it.
  188.  
  189.  
  190. 1.2 SGML
  191.  
  192. Why use SGML to achieve the above aims?  There are several
  193. reasons:
  194.  
  195. . It is the obvious tool for the job, being designed explicitly
  196.   for structuring text and offering a great deal of flexibility.
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204. C.Adie             draft-adie-shave-00.txt                 4
  205.  
  206.  
  207. Internet Draft         12 October, 1993 (Expires April 1994)
  208.  
  209.  
  210.  
  211.  
  212.  
  213. . It is supported by a range of existing commercial and public
  214.   domain tools.
  215.  
  216. . It is easy for non-expert users to read and write SGML.
  217.  
  218. . It lends itself to hierarchically-structured data.
  219.  
  220. . It has very few "special characters" which require escaping in
  221.   normal text.
  222.  
  223. To learn about SGML, there's a good little booklet called "The
  224. SGML Primer", written by SoftQuad [SoftQuad 91], which offers a
  225. rapid walk through the main features of the language.  The
  226. remainder of this document assumes you have read this booklet (or
  227. have an equivalent level of SGML knowlege).
  228.  
  229. The SGML "bible" is The SGML Handbook [Goldfarb 90], which
  230. contains the complete text of the ISO standard, as well as a
  231. great deal of excellent explanation.
  232.  
  233.  
  234. 1.3 The SHAVE Approach
  235.  
  236. The main problem with representing attribute/value information
  237. using SGML is one of nomenclature - the word "attribute" has a
  238. specific meaning in SGML, which differs from the meaning we've
  239. given it so far.  To resolve the conflict, in the rest of this
  240. document we will use the term "attribute" in its SGML meaning,
  241. and speak about "parameter/value" data instead of about
  242. "attribute/value" data.
  243.  
  244. It is envisaged that such SGML-encoded parameter/value data will
  245. be parsed by two kinds of programs:
  246.  
  247. . Programs which are based on generic SGML parsers, which base
  248.   their parsing on an externally-stored SGML Document Type
  249.   Definition (DTD).
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257. C.Adie             draft-adie-shave-00.txt                 5
  258.  
  259.  
  260. Internet Draft         12 October, 1993 (Expires April 1994)
  261.  
  262.  
  263.  
  264.  
  265.  
  266. . Programs which do not understand SGML or DTDs per se, and are
  267.   specific to a particular application.  Such programs might be
  268.   written in awk or Perl, or any other programming language.
  269.  
  270. In order to make it easier to write programs of the second kind
  271. ("naive parsers"), we will introduce restrictions which limit the
  272. way in which an SGML document and DTD may be written.  This
  273. document therefore describes some general rules (called "the
  274. SHAVE rules") for representing parameter/value data in SGML.  It
  275. does not define a DTD, but describes restrictions which:
  276.  
  277. . restrict how an application should define its own DTD.
  278.  
  279. . restrict how a document instance should be written, over and
  280.   above the rules imposed by the DTD and by SGML.
  281.  
  282. The remainder of this document is structured as follows.  Chapter
  283. 2 describes assumptions about the general SGML environment.
  284. Chapter 3 lists rules which restrict how DTDs may be written.
  285. Chapter 4 describes restrictions on document instances.  Chapter
  286. 5 (which is not formally part of the specification) gives
  287. examples of how the restrictions work.
  288.  
  289. For ease of identification and reference,
  290.  
  291.   0. SHAVE rules are numbered, indented and printed in italics,
  292.      like this.
  293.  
  294. Following each rule is an explanation and/or justification of the
  295. rule, if required.
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310. C.Adie             draft-adie-shave-00.txt                 6
  311.  
  312.  
  313. Internet Draft         12 October, 1993 (Expires April 1994)
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320. 2. General SGML Environment
  321.  
  322.   1. The SGML Reference Concrete Syntax shall be used, with the
  323.      modification that the syntax-reference character set shall
  324.      be ANSI X3.4 instead of ISO646 IRV.
  325.  
  326. This rule implies that the SGML Reference Delimeter set is used
  327. (see Goldfarb p477). Among other things, it also implies that the
  328. alphabetic case of element names is not significant, but the case
  329. of entity names is significant.
  330.  
  331.   2. The SGML Reference Quantity Set shall apply.
  332.  
  333. The Reference Quantity Set defines various limits which are
  334. usually left to the discretion of an implementor - see Goldfarb
  335. p470.  This rule ensures that a SHAVE document may be parsed by
  336. any generic SGML parser without having to worry about the
  337. parser's implementation limits.  The most important restriction
  338. is on the maximum length of SGML element and attribute names,
  339. which must not exceed 8 characters.
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363. C.Adie             draft-adie-shave-00.txt                 7
  364.  
  365.  
  366. Internet Draft         12 October, 1993 (Expires April 1994)
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373. 3. DTD Restrictions
  374.  
  375. A "SHAVE application" is the definition of a DTD and associated
  376. semantics, together with program(s) which parse conforming
  377. document instances.  This Chapter defines restrictions with which
  378. a SHAVE application's DTD must comply.
  379.  
  380.   3. A parameter shall be represented as an SGML element.
  381.  
  382. This is the key rule for understanding how SGML represents
  383. parameter/value information.  The name of the parameter is the
  384. element name, and the value of the parameter is the element
  385. content.
  386.  
  387.   4. A parameter which takes a single text value shall have a
  388.      content model of (#PCDATA).
  389.  
  390.   5. A parameter whose value is a set or sequence of other
  391.      parameter/value pairs will have a content model which
  392.      defines the parameters which may occur within it.
  393.  
  394. These rules simply state the obvious modelling of hierarchical
  395. parameter/value data by nested SGML elements.
  396.  
  397.   6. A parameter which takes a list of text values shall have a
  398.      content model similar to (item+), where the item element is
  399.      defined as:
  400.  
  401.                   <!ELEMENT item O O (#PCDATA)>
  402.  
  403. The declaration of item (or a similar element) must be included
  404. in the DTD.  The following Chapter describes restrictions on
  405. document instances relating to the use of this form of element.
  406.  
  407.   7. If the value of an element contains both (a) a text portion,
  408.      and (b) subidiary parameter/value information, then the
  409.      content model of the corresponding element shall specify
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416. C.Adie             draft-adie-shave-00.txt                 8
  417.  
  418.  
  419. Internet Draft         12 October, 1993 (Expires April 1994)
  420.  
  421.  
  422.  
  423.  
  424.  
  425.      that the #PCDATA representing (a) preceeds the other
  426.      elements which represent (b).
  427.  
  428. DTD designers should avoid specifying such content models -
  429. elements preferably should contain either other elements or
  430. #PCDATA, not both.  However, there may be cases where both are
  431. needed in a single element, and in such cases the #PCDATA should
  432. come first in order to aid legibility.
  433.  
  434.   8. The following SGML entity declarations shall be included in
  435.      an application DTD:
  436.  
  437.                         <!ENTITY amp "&">
  438.                         <!ENTITY lt "<">
  439.  
  440. Any octets (subject to the constraints of the character set in
  441. effect) are permitted in the #PCDATA content of an element,
  442. except for octets with decimal values 38 (the ampersand) and 60
  443. (the less-than sign).  These must be represented by entity
  444. references of the form & and < respectively.
  445.  
  446.   9. Applications which define parameters taking values which are
  447.      stored externally to the document instance, shall do so
  448.      using elements with a content notation defined in the
  449.      application's DTD.
  450.  
  451. An application program which processes the document instance may
  452. then choose to resolve the reference by retrieving the referenced
  453. value.  This approach has been chosen rather than the "external
  454. entity" feature of SGML in order to meet criteria 1 and 2 of
  455. section 1.1 above.
  456.  
  457.   10.     By default, #PCDATA within elements comprises
  458.      characters from ANSI X3.4.  Applications which wish to allow
  459.      the use of alternative character sets shall provide an
  460.      optional attribute cset for each element, which takes a
  461.      value which uniquely identifies the character set used in
  462.      #PCDATA within that element and all included elements which
  463.      do not specify their own cset attribute.
  464.  
  465.  
  466.  
  467.  
  468.  
  469. C.Adie             draft-adie-shave-00.txt                 9
  470.  
  471.  
  472. Internet Draft         12 October, 1993 (Expires April 1994)
  473.  
  474.  
  475.  
  476.  
  477.  
  478. The default character set for #PCDATA is US ASCII.  All markup is
  479. done in that character set.  Elements inherit cset values from
  480. their enclosing elements - unfortunately SGML does not provide a
  481. keyword to express this.
  482.  
  483. We need to specify a list of character set names which can be
  484. used as values of cset attributes.
  485.  
  486.   11.     Where an SGML attribute is specified in the DTD as
  487.      taking one of a fixed number of values,  the values shall be
  488.      distinct from values of all other attributes of the same
  489.      element type.
  490.  
  491. SGML attributes may be used to qualify the content of an element.
  492. This rule allows the attribute name to be omitted in document
  493. instances for certain types of attribute, as described in the
  494. following Chapter.  SGML attributes which take CDATA values do
  495. not fall into this category.
  496.  
  497.   12.     Application designers who wish to allow the use of
  498.      experimental parameters shall define the following element
  499.      and attribute in their DTD:
  500.  
  501.                       <!ELEMENT X - - RCDATA>
  502.                   <!ATTLIST X type CDATA #REQUIRED>
  503.  
  504. Individuals may then use the X element with a type of their
  505. choice to contain experimental values.  Note two points in
  506. particular:
  507.  
  508. . The </X> end tag is required.
  509.  
  510. . SGML requires that no other end tag may occur within an X
  511.   element.
  512.  
  513.   13.     If a MIME registration is required for a SHAVE format,
  514.      the registered MIME subtype shall be used in the DTD as the
  515.      document type name.
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522. C.Adie             draft-adie-shave-00.txt                10
  523.  
  524.  
  525. Internet Draft         12 October, 1993 (Expires April 1994)
  526.  
  527.  
  528.  
  529.  
  530.  
  531. The top-level MIME content type will probably be either "text"
  532. (if the data can usefully be displayed in text form) or
  533. "application" (otherwise).  Applying for registration is the
  534. responsibility of the application designer(s).  Note that SHAVE
  535. does not itself have or require a MIME registration.
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575. C.Adie             draft-adie-shave-00.txt                11
  576.  
  577.  
  578. Internet Draft         12 October, 1993 (Expires April 1994)
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585. 4. Document Instance Restrictions
  586.  
  587. The rules in this Chapter restrict how markup occurs.  The
  588. purpose of these restrictions is twofold - to make it easier for
  589. a human to read the document, and to make it easier to write a
  590. parser which is not fully SGML-aware.
  591.  
  592.   14.     Comments in a document instance shall start with the
  593.      four-character sequence <!-- and end with the three-
  594.      character sequence -->.
  595.  
  596. This restriction prohibits spaces from occurring between the --
  597. and the > at the end of the comment (this is normally allowed in
  598. SGML).  The <!> empty comment and comments within tags are
  599. excluded by this rule.  Comments are discarded by the parser.
  600.  
  601.   15.     Start tags shall not be omitted, and tags shall not be
  602.      shortened, except where otherwise specified in these rules.
  603.  
  604.   16.     When a tag occurs in a document, its opening delimeter
  605.      (less-than sign) must occur as the first non-blank character
  606.      on the line.
  607.  
  608. These rules makes things much easier for non-SGML-aware programs.
  609. Note that the element name immediately follows the opening
  610. delimiter, but the closing delimeter (greater-than sign) may be
  611. preceeded by white space.
  612.  
  613.   17.     Within an element which contains #PCDATA, white space
  614.      occurring before the first non-white character and white
  615.      space occurring between the last non-white character and the
  616.      opening delimeter of the tag which closes the element, shall
  617.      be discarded by the parser.
  618.  
  619. This rule ensures that leading spaces, newlines etc, introduced
  620. for legibility at the beginning and end of an element are
  621. ignored.  However, white space within the text of an element is
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628. C.Adie             draft-adie-shave-00.txt                12
  629.  
  630.  
  631. Internet Draft         12 October, 1993 (Expires April 1994)
  632.  
  633.  
  634.  
  635.  
  636.  
  637. not ignored by the parser and may be treated as significant by
  638. the application.
  639.  
  640.   18.     Where an SGML attribute is specified in the DTD as
  641.      taking one of a fixed number of values which are distinct
  642.      from values of all other attributes of the same element
  643.      type, the attribute name shall be omitted in document
  644.      instances.
  645.  
  646. This rule refers to the "Attribute Minimisation" feature of SGML,
  647. as described in the ISO standard Annex C.1.1.3 (Goldfarb p70),
  648. which permits the omission of the attribute name.  The above
  649. SHAVE rule makes this omission mandatory.
  650.  
  651.   19.     Where an element has a content model of the form
  652.      (item+) to represent a list of values, and each item within
  653.      the element contains only #PCDATA, the following
  654.      minimisations shall occur within the enclosing element:  (a)
  655.      All item end tags shall be omitted.  (b) The first item
  656.      start tag after the start tag of the enclosing element shall
  657.      be omitted.  (c) Other occurrences of the item start tag
  658.      shall be shortened to the empty tag <>.
  659.  
  660. This rule allows the pair of characters <> to be used as
  661. separators in a list of values in some common circumstances (see
  662. Goldfarb p75).
  663.  
  664.   20.     The Reference Close delimeter (;) shall not be omitted.
  665.  
  666. This delimeter terminates an entity reference, and must always be
  667. present.  (The use of Record End as a Reference Close delimeter
  668. is thus not permitted.)
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681. C.Adie             draft-adie-shave-00.txt                13
  682.  
  683.  
  684. Internet Draft         12 October, 1993 (Expires April 1994)
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691. 5. Examples
  692.  
  693. This chapter gives some examples of how some of the SHAVE rules
  694. might apply to a particular imaginard SHAVE application.  This
  695. chapter is not definitive.  For further examples, see [Adie 93],
  696. which is a complete specification of a SHAVE-conformant format.
  697.  
  698. Rules 6 and 19
  699.  
  700. If an application requires a computer parameter which takes a
  701. list of values, it might define a DTD containing:
  702.  
  703. <!ELEMENT opsys
  704. <!ELEMENT item     O O (#PCDATA, opsys?)>
  705. <!ELEMENT computer - O (item+)>
  706.  
  707. and a document instance might contain the following list
  708. containing three items:
  709.  
  710. <computer> Apple Macintosh
  711.         <> IBM PC
  712.         <> Sun Sparcstation
  713. </computer>
  714.  
  715. Note that if an opsys element is present, then rule 19 does not
  716. apply and every item start tag must be present:
  717.  
  718. <computer>
  719.   <item>     Apple Macintosh
  720.   <item>     IBM PC
  721.     <opsys>  DOS
  722.   <item>     Sun Sparcstation
  723. </computer>
  724.  
  725. These rules are complex, but have the advantage of maintaining
  726. the legibility of the document instance.
  727.  
  728. Rule 7
  729.  
  730.  
  731.  
  732.  
  733.  
  734. C.Adie             draft-adie-shave-00.txt                14
  735.  
  736.  
  737. Internet Draft         12 October, 1993 (Expires April 1994)
  738.  
  739.  
  740.  
  741.  
  742.  
  743. This rule is obeyed by the following element declaration:
  744.  
  745. <!ELEMENT foo - O ((#PCDATA), (bar1 & bar2))>
  746.  
  747. It is NOT obeyed by the following element declaration, which
  748. permits the bar1 and bar2 elements to occur before the #PCDATA:
  749.  
  750. <!ELEMENT foo - O ((#PCDATA) & bar1 & bar2)>
  751.  
  752. Rule 9
  753.  
  754. To define a parameter the value of which is accessed through a
  755. URL, an application would define a notation and an element thus:
  756.  
  757. <!NOTATION url SYSTEM >
  758. <!ELEMENT foo - O (#PCDATA)>
  759. <!ATTLIST foo type NOTATION (url) url>
  760.  
  761. The foo element in the document instance would then contain the
  762. URL:
  763.  
  764. <foo>  ftp:://ftp.ed.ac.uk/pub/mmaccess/mmaccess.ps.Z
  765. </foo>
  766.  
  767. Rule 10
  768.  
  769. Suppose a fargle element is defined as follows:
  770.  
  771. <!ELEMENT fargle - O (#PCDATA)>
  772. <!ATTLIST fargle cset CDATA #IMPLIED>
  773.  
  774. Then a document containing a fargle element containing the string
  775. A&o in a character set called Code Page 437 might contain the
  776. following:
  777.  
  778. <fargle cset="Code Page 437">*</fargle>
  779.  
  780. where * stands for the following sequence of octets:
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787. C.Adie             draft-adie-shave-00.txt                15
  788.  
  789.  
  790. Internet Draft         12 October, 1993 (Expires April 1994)
  791.  
  792.  
  793.  
  794.  
  795.  
  796. 8/14  2/6  6/1  6/13  7/0  3/11  9/5
  797.  
  798. Note that the occurrence of octet 2/6 in the selected character
  799. set is replaced by the octet sequence 2/6  6/1  6/13  7/0  3/11
  800. (ie & in the default character set).  The parser would
  801. replace this octet sequence with the single octet 2/6 before
  802. emitting it to the application.  Note that 2/6 need not
  803. correspond to the ampersand in the selected character set
  804. (although in this case it does).  The point is that the SGML
  805. parser cares about octet 2/6, not the octet(s) which happen to
  806. represent the ampersand in the selected character set.
  807.  
  808. Octet 3/12 (the less-than sign in the default set) would be
  809. treated similarly.
  810.  
  811. Rule 17
  812.  
  813. This rule means that in the following document fragment:
  814.  
  815. <name>         John Smith
  816. <title>        Leader of the Opposition
  817. </title>
  818.  
  819. the data may be lined up vertically without the leading spaces or
  820. tabs or the trailing newlines being treated as significant data.
  821. However, in the fragment:
  822.  
  823. <motto>     Weave a circle round him thrice
  824.             And close your eyes with holy dread
  825. </motto>
  826.  
  827. the newline and intervening spaces between the two phrases are
  828. preserved by the parser.
  829.  
  830. Rule 18
  831.  
  832. This rule implies that given the DTD fragment:
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840. C.Adie             draft-adie-shave-00.txt                16
  841.  
  842.  
  843. Internet Draft         12 October, 1993 (Expires April 1994)
  844.  
  845.  
  846.  
  847.  
  848.  
  849. <!ELEMENT email - O #PCDATA>
  850. <!ATTLIST email mailtype (rfc822|X.400) #REQUIRED>
  851.  
  852. a document should be encoded:
  853.  
  854. <email rfc822> foo@bar.com
  855.  
  856. and NOT as:
  857.  
  858. <email mailtype="rfc822"> foo@bar.com
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893. C.Adie             draft-adie-shave-00.txt                17
  894.  
  895.  
  896. Internet Draft         12 October, 1993 (Expires April 1994)
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903. 6. References
  904.  
  905. [Adie 93] SGML-based Personal Contact Information (SPCI), C.Adie,
  906.           September 1993.  Internet Draft (work in progress).
  907.  
  908. [Crocker 93a]  Structured Text Interchange Format (STIF), D.
  909.           Crocker, June 1993.  Internet Draft (work in progress).
  910.  
  911. [Crocker 93b]  Encoding for Personal Contact Information (PCI),
  912.           D. Crocker, June 1993.  Internet Draft (work in
  913.           progress).
  914.  
  915. [Goldfarb 90]  The SGML Handbook, C. Goldfarb, Oxford University
  916.           Press 1990 (ISBN 0-19-853737-9).
  917.  
  918. [SoftQuad 91]  The SGML Primer, SoftQuad Inc 1991.  Available for
  919.           $10 from:
  920.           <spci>
  921.            <person key="SoftQuad">
  922.             <org>        SoftQuad Inc
  923.             <work>
  924.              <phone>          +1 416 239 4801
  925.              <street>         56 Aberfoyle Crescent, Suite 810
  926.              <city>      Toronto
  927.              <country>   Canada
  928.              <postcode>  M8X 2W4
  929.           </spci>
  930.  
  931.  
  932. 7. Security Considerations
  933.  
  934. There are no security implications of this specification.
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946. C.Adie             draft-adie-shave-00.txt                18
  947.  
  948.  
  949. Internet Draft         12 October, 1993 (Expires April 1994)
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956. 8. Acknowlegements
  957.  
  958. This work was inspired by Dave Crocker's work on STIF [Crocker
  959. 93a] and PCI [Crocker 93b].  Lou Burnard provided helpful
  960. comments.
  961.  
  962. If you provide constructive comments, you could find your name
  963.           appearing here.
  964.  
  965.  
  966. 9. Contact
  967.  
  968. <spci>
  969.  <person key="Chris Adie">
  970.   <name>       Chris Adie
  971.   <dept>       Computing Service
  972.   <org>        Edinburgh University
  973.   <email>      C.J.Adie@edinburgh.ac.uk
  974.   <work>
  975.    <phone>          +44 31 650 3363
  976.    <fax>       +44 31 662 4809
  977.    <building>  University Library Building
  978.    <street>         George Square
  979.    <city>      Edinburgh
  980.    <postcode>  EH8 9LJ
  981.    <country>   Great Britain
  982. </spci>
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999. C.Adie             draft-adie-shave-00.txt                19
  1000.